package com.fstec.ks.master;

import java.io.File;

import com.fstec.ks.master.bean.ExamRunInfo;
import com.fstec.ks.master.bean.RegistInfo;
import com.fstec.ks.master.bean.RoundBakBean;
import com.fstec.ks.master.bean.ServerRegBean;
import com.fstec.ks.master.queue.QueueMeta;

/**
 * 监测客户端接口定义
 * @Title MasterClient.java
 * @Package com.fstec.ks.master
 * @Description 
 * Copyright: Copyright (c) 2023
 * Company:广东峰上科技有限公司
 * 
 * @author <a href="mailto:xieqj@fstec.com">谢启进</a>
 * @date 2023年10月15日 下午9:09:35
 * @version V1.0
 */
public interface MasterClient {
	/**
	 * 获取监控服务的注册信息
	 * @return
	 * @auth <a href="mailto:xieqj@sinoth.com">谢启进</a>
	 * @date 2020年6月4日 下午2:46:38
	 */
	RegistInfo getRegistInfo();
	/**
	 * 注册监控服务
	 * @param authInfo
	 * @auth <a href="mailto:xieqj@fstec.com">谢启进</a>
	 * @date 2023年10月15日 下午9:20:36
	 */
	String regist(String ipAddr, int port, ServerRegBean serverRegBean);
	/**
	 * 解除注册
	 * @auth <a href="mailto:xieqj@fstec.com">谢启进</a>
	 * @date 2023年10月16日 上午10:15:13
	 */
	void unregist();
	/**
	 * 备份考试服务程序
	 * @param serverBakFile
	 * @auth <a href="mailto:xieqj@fstec.com">谢启进</a>
	 * @date 2023年10月16日 上午10:18:24
	 */
	void backupServer(File serverBakFile);
	/**
	 * 发送考试服务器运行状态信息
	 * @param examRunInfo
	 * @auth <a href="mailto:xieqj@fstec.com">谢启进</a>
	 * @date 2023年10月16日 上午10:21:42
	 */
	void sendExamInfo(ExamRunInfo examRunInfo);
	/**
	 * 备份场次考试数据
	 * @param roundBakBean
	 * @param roundBakFile
	 * @auth <a href="mailto:xieqj@fstec.com">谢启进</a>
	 * @date 2023年10月16日 上午10:28:37
	 */
	void backupRound(RoundBakBean roundBakBean, File roundBakFile);
	/**
	 * 获取消息队列元数据
	 * @return
	 * @auth <a href="mailto:xieqj@fstec.com">谢启进</a>
	 * @date 2023年10月18日 下午3:05:35
	 */
	QueueMeta getQueueMeta();
	/**
	 * 是否建立与监控服务连接
	 * @return
	 * @auth <a href="mailto:xieqj@fstec.com">谢启进</a>
	 * @date 2023年10月19日 上午10:25:56
	 */
	boolean isConnect();
	/**
	 * 保存监控服务信息
	 * @param ipAddr
	 * @param port
	 * @auth <a href="mailto:xieqj@fstec.com">谢启进</a>
	 * @date 2023年10月20日 下午3:02:41
	 */
	void saveServerInfo(String ipAddr, int port);
}
